﻿Public Class GenerarReporteDeduccionPorEmpleadoSGS
    ''' <summary>
    ''' Función que hace la carga a la tabla temporal rptdeduccionporempleado de la vista vrptdeduccionporempleadoTableAdapter
    ''' </summary>
    ''' <param name="FechaInicial">Corresponde a la fecha inicial para el reporte</param>
    ''' <param name="FechaFinal">Corresponde a la fecha final para el reporte</param>
    ''' <param name="IdEmpresa">Corresponde al ID principal de la empresa</param>
    ''' <param name="IdTipoPago">Corresponde al id del tipo de pago</param>
    ''' <param name="IdNomina">Corresponde al id de la nomina</param>
    ''' <returns>Retorna verdadero si no hubieron problemas</returns>
    ''' <remarks></remarks>
    Public Shared Function CargarDataTablaTemporal(ByVal FechaInicial As Date, ByVal FechaFinal As Date, ByVal IdEmpresa As Integer, ByVal IdTipoPago As Integer, ByVal IdNomina As Integer, ByVal estado As Boolean) As Boolean
        Try
            If ConexionSGS.EjecutarQueryScalar("SELECT rptdeduccionporempledoenejecucion FROM sysconfig WHERE idsys = 1 ") = True Then
                ''Actualizar la variable a false lo cual indica que está siendo usado por otro Usuario
                ConexionSGS.EjecutarQueryNonQuery("UPDATE sysconfig set rptdeduccionporempledoenejecucion = 'f' WHERE idsys = 1;")
                ''Elimina la data de la tabla rptdeduccionporempleadopara evitar que se dupliquen registros
                ConexionSGS.EjecutarQueryNonQuery("DELETE FROM rptdeduccionporempleado")
                Using adaptadorDeduccionEmpleadoVista As New dbFireAndIceDataSetTableAdapters.vrptdeduccionporempleadoTableAdapter()
                    Dim IdCliente As String = ""
                    Dim total As Double = 0
                    Dim nombrecliente As String = ""
                    Dim descripcion As String = ""
                    Dim codigo As String = ""
                    ''Hacer las operaciones solo si hay registros en la vista
                    If (adaptadorDeduccionEmpleadoVista.GetDataByBasico(IdEmpresa, IdNomina, IdTipoPago, FechaInicial, FechaFinal, estado).Count) > 0 Then
                        For Each item In adaptadorDeduccionEmpleadoVista.GetDataByBasico(IdEmpresa, IdNomina, IdTipoPago, FechaInicial, FechaFinal, estado)
                            If IdCliente = "" Then
                                IdCliente = item.idcliente
                            End If
                            If IdCliente <> item.idcliente Then
                                ''Se hace in insert del registro anterior
                                ConexionSGS.EjecutarQueryNonQuery(String.Format("INSERT INTO rptdeduccionporempleado(idcliente, codigo, nombrecompleto, totalplanilla, tiponomina) VALUES ('{0}', '{1}', '{2}', {3}, '{4}');", IdCliente, codigo, nombrecliente, total, descripcion))
                                IdCliente = item.idcliente
                                total = 0
                            End If
                            codigo = item.codigo
                            nombrecliente = item.nombrecompleto
                            descripcion = item.descripcion
                            total += item.totalplanilla
                        Next
                        ''Insert para el ultimo registro
                        ConexionSGS.EjecutarQueryNonQuery(String.Format("INSERT INTO rptdeduccionporempleado(idcliente, codigo, nombrecompleto, totalplanilla, tiponomina) VALUES ('{0}', '{1}', '{2}', {3}, '{4}');", IdCliente, codigo, nombrecliente, total, descripcion))
                    Else
                        System.Windows.Forms.MessageBox.Show("No hay registros según los parámetros ingresados", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                        ''Actualizar la variable a true para dejarla disponible
                        ConexionSGS.EjecutarQueryNonQuery("UPDATE sysconfig set rptdeduccionporempledoenejecucion = 't' WHERE idsys = 1;")
                        Return False
                    End If
                    ''Actualizar la variable a true para dejarla disponible
                    ConexionSGS.EjecutarQueryNonQuery("UPDATE sysconfig set rptdeduccionporempledoenejecucion = 't' WHERE idsys = 1;")
                End Using
            Else
                System.Windows.Forms.MessageBox.Show("No puede generar el reporte en este momento, favor intentelo mas tarde.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Return False
            End If
        Catch ex As Exception
            MsgBox("No se pudo generar el reporte, favor contácte al equipo de soporte técnico.", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error generando el reporte")
            LogSGS.RegistrarLogSinEnviarCorreo(My.Resources.StringGlobal.prgVinicio, "Error en la clase GenerarReporteDeduccionPorEmpleadoSGS al momento de cargar la data en la tabla temporal rptdeduccionporempleado", ex, My.Resources.StringGlobal.mdlSeguridad, "GenerarReporteDeduccionPorEmpleadoSGS", "CargarDataTablaTemporal")
            ''Actualizar la variable a true para dejarla disponible
            ConexionSGS.EjecutarQueryNonQuery("UPDATE sysconfig set rptdeduccionporempledoenejecucion = 't' WHERE idsys = 1;")
            Return False
        End Try
        Return True
    End Function
End Class
